<?php

require_once __DIR__ . '/CSVGenerator.php';

/**
 * Classe para gerar a String de arquivos CSV para Alunos.
 *
 * @author Hyzandey
 */
abstract class AlunoGeradorCSV {

	const ESCOLA_ONLINE = 'Escola Online?';
	const ANO_SEMESTRE = 'AnoSemestre';
	const COD_ALUNO = 'Código do Aluno';
	const NOME_ALUNO = 'Nome do Aluno';
	const DT_NASCIMENTO = 'Data de Nascimento';
	const NOME_MAE = 'Nome da Mãe';
	const SEXO = 'Sexo';
	const CRE = 'Coordenação Regional de Ensino';
	const COD_ESCOLA = 'Código da Escola';
	const NOME_ESCOLA = 'Nome da Escola';
	const TURNO = 'Turno';
	const NUM_CHAMADA = 'Número da Chamada';
	const CEP = 'CEP';
	const LOGRADOURO = 'Logradouro';
	const TEL_MAE = 'Telefone da Mãe';
	const ENDERECO = 'Endereço do Aluno';
	const UF = 'UF';
	const CIDADE = 'Cidade';
	const ONLINE_SIM = 'Sim';
	const ONLINE_NAO = 'Não';
	const MASCULINO = 'Masculino';
	const FEMININO = 'Feminino';
	const ALUNO_LISTA_INVALIDO
	= 'O argumento dado deve ser um array de objetos Aluno!';

	/**
	 * @var AlunoResultSet ResultSet de alunos a partir da qual será gerado o CSV.
	 */
	protected $alunoResultSet;

	/**
	 * @var CSVGenerator Gerador de CSV utilizado internamente.
	 */
	protected $geradorCSV;

	/**
	 * @param array[Aluno] $alunoLista Lista de alunos para geração do CSV.
	 */
	public function __construct($alunoResultSet) {

		$this->alunoResultSet = $alunoResultSet;

		$this->geradorCSV = new CSVGenerator();
	}

	public function echoCSV(){
		$arrayCabecalho = $this->getHeaderArrayRow();
			
		$this->geradorCSV->echoRow($arrayCabecalho);
			
		while ($aluno = $this->alunoResultSet->getNext()) {

			$arrayValores = $this->getAlunoArrayRow($aluno);
			
			$this->geradorCSV->echoRow($arrayValores);
		}
	}

	protected abstract function getHeaderArrayRow();

	protected abstract function getAlunoArrayRow($aluno);

}

?>
